数字分隔符

C++14起,可以使用单引号作为分隔符。

auto a = 1'234'567;		//1234567(整数)
auto b = 1'234'567s;	//1234567 秒

函数返回类型推导

C++11的 auto 可以从lambda的return语句推导返回值类型,但不能自动推导函数返回类型,只能充当占位符的作用,C++14的 auto 可以推导函数返回类型。

template<typename T>
auto use_11(const T& a) -> int {
    return a.size();
}

template<typename T>
auto use_14(const T& a) {
    return a.size();
}

lambda完善

泛型lambda

auto get_size = [](auto& m){ return m.size(); }

移动捕获

int* ptr = nullptr;
auto a = [p = move(ptr)]{ /*...*/ }

constexpr函数中的局部变量

constexpr int min(std::initializer_list<int> xs) {
    int low = std::numeric_limits<int>::max();
    for(int x : xs) {
        if (x < low) low = x;
    }
    return low;
}

constexpr int m = min({1,3,2,4});//给定参量表达式作为参数,min即可在编译时求值